'use strict';

// 1. 导入所需模块
// 导入koa2框架，让其跑在服务器上
const Koa = require('koa');
// 导入静态资源处理的模块
const statics = require('koa-static');
// 导入处理POST请求的模块
const bodyParser = require('koa-bodyparser');
// 导入集中处理路由的中间件
const router = require('./controllers');
// 导入模板引擎的中间件
const templating = require('./templating');
// 导入数据库模型
const models = require('./models');

// 2. 实例化对象server，相当于一台Web服务器
const server = new Koa();

// 3. 注册使用模块（中间件）
// 注册使用静态资源处理模块
server.use(statics(__dirname));
// 注册使用处理POST请求的模块
server.use(bodyParser());
// 注册使用模板引擎中间件
server.use(templating);
// 注册使用集中处理路由的中间件
server.use(router());

// 4. 程序运行时，初始化数据库表
(async (ctx, next) => {
    await models.sync().then(() => {
        let users = models.users;
        users.create({ username: 'h_yr', password: 'mima123.' });
    });
})();

// 5. 服务器监听3000端口
let port = 3000;
server.listen(port, () => {
    console.log(`http://127.0.0.1:${port}`);
});
